<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
            1.try中可能出现错误的代码，一旦出现错误立即停止try中的代码的执行，调用catch，并携带错误信息
        */

        try {
            console.log(1);
            console.log(a);//代码执行到这里，发现a不存在，于是就停止执行后面的代码，并将错误信息传递给catch，然后catch里的内容开始执行
            console.log(2);
        } catch (error) {
            console.error('代码执行出错了, 错误是:',error)
        }
        /*
            其实我们js原生的报错机制并没啥复杂的，我们上面的代码是我们自己捕获了错误。而当我们没有将可能出错的代码放在try中，而是正常写在了js里，这个时候出错就是没有被捕获的，所以我们很多时候会发现控制台里的报错最前面都会有两个单词Uncaught Error，也就是没有被捕获的错误的意思。后面才会写出错误的具体内容。
        */
    </script>
</body>
</html>